﻿Imports Capa_de_Acceso_a_Datos

Public Class frmCerrarObraSocial

    Private PrevisualizarClick As Boolean = False
    Private CerrarClick As Boolean = False
    Private ObraSocialXPlanId As Integer
    Private AnoId As Integer
    Private MesId As Integer


    Private Sub frmCierreObraSocial_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        'TODO Ojo! porque cambiamos el llamado del menuAuditoría a showdialog
        'Borrar las filas de la tabla reporteCierre 
        If PrevisualizarClick = True And CerrarClick = False Then
            CierreObraSocialDAO.eliminarFilasTablaReporteCierre()
        End If
        Me.Dispose()
    End Sub

    Private Sub CierreObraSocial_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CargarCombos()
    End Sub

    Private Sub CargarCombos()
        'Combo Año
        cboAno.ValueMember = "AnoId"
        cboAno.DisplayMember = "Ano"
        cboAno.DataSource = Constante.obtenerAnos

        'Combo Mes 
        cboMes.ValueMember = "MesId"
        cboMes.DisplayMember = "MesNombre"
        cboMes.DataSource = MesDAO.obtenerMeses(0)
        cboMes.SelectedValue = Date.Now.Month

        'Combo ObraSocialXPlan
        cboObraSocial.ValueMember = "ObraSocialXPlanId"
        cboObraSocial.DisplayMember = "Descripcion"
        cboObraSocial.DataSource = ObraSocialXPlanDAO.comboObraSocialXPlan()

    End Sub

    Private Sub btnPrevisualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevisualizar.Click

        ObraSocialXPlanId = cboObraSocial.SelectedValue
        AnoId = cboAno.SelectedValue
        MesId = cboMes.SelectedValue

        MostrarReporte()
        PrevisualizarClick = True
    End Sub

    Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
        Me.Close()
        frmMenuAuditoria.Show()
    End Sub

    Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click

        'Datos para insertar el cierre en la BD
        ObraSocialXPlanId = cboObraSocial.SelectedValue
        AnoId = cboAno.SelectedValue
        MesId = cboMes.SelectedValue

        If ObraSocialCerrada() Then
            MsgBox("La obra social ya ha sido cerrada en el período especificado", MsgBoxStyle.Information, "Atención")
            Return
        End If

        'Obtengo los totales de recetas, facturados y a cargo de la OS
        Dim totalesOS As Double() = CierreObraSocialDAO.obtenerTotalesOS()
        Dim totalRecetas As Integer = totalesOS(0)
        Dim totalFacturado As Double = CDbl(Utilidades.darFormatoDouble(totalesOS(1)))
        Dim totalACargo As Double = CDbl(Utilidades.darFormatoDouble(totalesOS(2)))

        'Insertamos el cierre en la BD
        CierreObraSocialDAO.insertarCierreObraSocial(MesId, AnoId, ObraSocialXPlanId, totalRecetas, totalFacturado, totalACargo)
        'Por defecto al insertar un cierre el estado del mismo se pone como CERRADO (por el usp_cierreObraSocial)
        MostrarReporte()
        MsgBox("La Obra Social ha sido cerrada con éxito.", MsgBoxStyle.Information, "Información")
        CerrarClick = True
    End Sub

    Private Function ObraSocialCerrada() As Boolean
        Dim retorno As Boolean = False

        If CierreObraSocialDAO.ObraSocialCerrada(MesId, AnoId, ObraSocialXPlanId) Then
            retorno = True
        End If

        Return retorno
    End Function

    Private Sub MostrarReporte()
        Dim Ano As Integer = cboAno.Text
        Dim Mes As String = cboMes.Text
        Dim ObraSocialXPlan As String = cboObraSocial.Text

        'Creamos la tabla reporte con las carátulas de la obraSocialXPlan, año y mes correspondientes
        CierreObraSocialDAO.crearTablaReporteCierre(ObraSocialXPlanId, AnoId, MesId)

        gboPresentacion.Enabled = True

        'Reporte
        Dim reporte As New rptCierreObraSocial

        'Origen de datos
        reporte.SetDataSource(CierreObraSocialDAO.obtenerReporteCierre)

        'Parámetros
        reporte.SetParameterValue("Ano", Ano)
        reporte.SetParameterValue("Mes", Mes)
        reporte.SetParameterValue("ObraSocialXPlan", ObraSocialXPlan)

        'Lo muestro con el visor
        crvCierreObraSocial.ReportSource = reporte
        crvCierreObraSocial.Zoom(60)
    End Sub

End Class